#!/bin/sh

# run from directory where this script is
cd `echo $0 | sed 's/\(.*\)\/.*/\1/'` # extract pathname
EXAMPLE_DIR=`pwd`

# check whether echo has the -e option
if test "`echo -e`" = "-e" ; then ECHO=echo ; else ECHO="echo -e" ; fi

# function to test the exit status of a job
. ../check_failure.sh

$ECHO
$ECHO "$EXAMPLE_DIR : starting MD"
$ECHO

# set the needed environment variables
. ../environment_variables

# required executables and pseudopotentials
BIN_LIST="pw.x dos.x projwfc.x kvecs_FS.x bands_FS.x"
PSEUDO_LIST="Al.pbe-rrkj.UPF"

$ECHO
$ECHO "  executables directory: $BIN_DIR"
$ECHO "  pseudo directory:      $PSEUDO_DIR"
$ECHO "  temporary directory:   $TMP_DIR"
$ECHO "  checking that needed directories and files exist...\c"

# check for directories
for DIR in "$BIN_DIR" "$PSEUDO_DIR" ; do
    if test ! -d $DIR ; then
        $ECHO
        $ECHO "ERROR: $DIR not existent or not a directory"
        $ECHO "Aborting"
        exit 1
    fi
done
for DIR in "$TMP_DIR" "$EXAMPLE_DIR/results" ; do
    if test ! -d $DIR ; then
        mkdir $DIR
    fi
done
cd $EXAMPLE_DIR/results

# check for executables
for FILE in $BIN_LIST ; do
    if test ! -x $BIN_DIR/$FILE ; then
        $ECHO
        $ECHO "ERROR: $BIN_DIR/$FILE not existent or not executable"
        $ECHO "Aborting"
        exit 1
    fi
done
 
# check for pseudopotentials
for FILE in $PSEUDO_LIST ; do
    if test ! -r $PSEUDO_DIR/$FILE ; then
        $ECHO
        $ECHO "ERROR: $PSEUDO_DIR/$FILE not existent or not readable"
        $ECHO "Aborting"
        exit 1
    fi
done
$ECHO " done"

# how to run executables
PW_COMMAND="$PARA_PREFIX $BIN_DIR/pw.x $PARA_POSTFIX"
KUBO_COMMAND="$PARA_PREFIX $BIN_DIR/kubo.x $PARA_POSTFIX"
DOS_COMMAND="$PARA_PREFIX $BIN_DIR/dos.x $PARA_POSTFIX"
PROJWFC_COMMAND="$PARA_PREFIX $BIN_DIR/projwfc.x $PARA_POSTFIX"
KVECS_COMMAND="$BIN_DIR/kvecs_FS.x "
BANDS_COMMAND="$BIN_DIR/bands_FS.x "
$ECHO
$ECHO "  running pw.x as:      $PW_COMMAND"
$ECHO "  running dos.x as:     $DOS_COMMAND"
$ECHO "  running projwfc.x as: $PROJWFC_COMMAND"
$ECHO "  running kvecs_FS.x as:  $KVECS_COMMAND"
$ECHO "  running bands_FS.x as:  $BANDS_COMMAND"
$ECHO
 
# clean TMP_DIR
$ECHO "  cleaning $TMP_DIR...\c"
rm -rf $TMP_DIR/*
$ECHO " done"


# celldm at 293.2K is 4.0488 A = 7.6511 Bohr
# expansion at 14K is -0.419 % -> 7.683 Bohr
# expansion at 500K is +0.514 % -> 7.690 Bohr
# expansion at 800K is +1.408 % -> 7.759 Bohr

cat > md_Al_4.in << EOF
  &control
   calculation='md',
   restart_mode='from_scratch',
   pseudo_dir = '$PSEUDO_DIR',
   dt=7,
   nstep = 5000 ,
   outdir='./',
   prefix='Al4',
   disk_io ='low'
/
 &system
    ibrav=  2, celldm(1) =7.759, nat=  4, ntyp= 1, ecutwfc =50.0
    occupations =  'smearing',
    degauss = 0.004,
    smearing = 'fd'
    nosym = .true.
/
 &electrons
    electron_maxstep = 999 ,
    conv_thr = 1.0e-6 ,
    mixing_beta = 0.3 ,
    startingwfc = 'atomic+random' ,
/
 &ions
    wfc_extrapolation = 'second_order',
    ion_temperature = 'rescale-v' ,
    tempw = 800.0 ,
    nraise = 20 ,

/

ATOMIC_SPECIES
Al  26.98 Al.pbe-rrkj.UPF
ATOMIC_POSITIONS (crystal)
 Al 0.00 0.00 0.00
 Al 0.50 0.50 0.00
 Al 0.00 0.50 0.50
 Al 0.50 0.00 0.50
K_POINTS (automatic)
 1 1 1 0 0 0

EOF

$ECHO "  running the MD calculation for Al...\c"
mpiexec -n 4 $PW_COMMAND  < md_Al_4.in > md_Al4.out
check_failure $?
$ECHO " done"


